Skip to main content

IPtables deep dive

iptables — bu Linux yadrosi (kernel) ichida ishlaydigan Netfilter tizimining foydalanuvchi interfeysidir. U orqali siz kiruvchi, chiquvchi yoki kompyuter orqali o'tayotgan paketlar (ma'lumotlar) ustida filtrlash, marshrutlash, NAT, va boshqa xavfsizlik amallarini bajarasiz.

Ya’ni bu vosita sizga firewall (devor) sifatida xizmat qiladi.


iptables asosiy TUSHUNCHALARI

1. Chains (Zanjirlar):

iptablesda paketlar quyidagi zanjirlar (chains) orqali tekshiriladi:

ChainTavsifi
INPUTKompyuterga kelayotgan trafik uchun
OUTPUTKompyuterdan chiqayotgan trafik uchun
FORWARDKompyuter orqali o'tayotgan trafik (router sifatida)
PREROUTINGNAT dan oldin bajariladi
POSTROUTINGNAT dan keyin bajariladi

2. Tables (Jadvallar):

iptablesda har xil turdagi vazifalar uchun turli jadvallar mavjud:

Jadval nomiMaqsadi
filterOdatiy jadval — filtrlash uchun ishlatiladi (INPUT, OUTPUT, FORWARD)
natNAT (masalan, IP manzilni o‘zgartirish) uchun ishlatiladi
manglePaketga alohida bayroq, belgi (mark) qo‘shish uchun
rawUlanishni kuzatishdan oldin qoida qo‘yish uchun
securitySELinux xavfsizlik filtratsiyasi uchun

Harakat Jarayoni (Packet Flow)

        PREROUTING
|
[Routing Decision]
/ \
Local FORWARD ----> POSTROUTING
Process |
| OUTPUT
↓ ↓
INPUT Local Process

Oddiy Misollar

1. Barcha trafikni rad etish:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

2. Faqat localhostdan ruxsat berish:

iptables -A INPUT -i lo -j ACCEPT

3. 80-port (HTTP) ga ruxsat berish:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

4. IP manzilni bloklash:

iptables -A INPUT -s 192.168.1.100 -j DROP

Deep Concepts

Stateful Filtering (Holatga asoslangan filtr):

iptables paketning holatini tekshirishi mumkin:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Bu sizga ilgari bog‘langan so‘rovlarni avtomatik o‘tkazishga imkon beradi.


NAT (Masquerading)

Internetga chiqayotgan lokal IP’larni tashqi IP’ga o‘zgartirish:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Foydali Buyruqlar

BuyruqTavsifi
iptables -LHozirgi qoida ro‘yxatini ko‘rish
iptables -FBarcha qoidalarni tozalash (flush)
iptables -SHar bir qoida qanday yozilganini ko‘rsatadi
iptables-saveQoida holatini faylga saqlash
iptables-restoreSaqlangan holatni tiklash

Amaliy Misol

Masalan: faqat 22-port (SSH) va 80-port (HTTP) ochiq, qolgan barchasi yopiq:

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Qo‘shimcha: ufw va firewalld

iptables qiyin bo‘lsa, ufw (Uncomplicated Firewall) yoki firewalld kabi soddalashtirilgan vositalardan foydalanish mumkin.


❗ Diqqat

  • iptables har bir qoidani yuqoridan pastga qarab tekshiradi.
  • -A (append) orqali qo‘shilgan qoidalar oxiriga qo‘shiladi.
  • Har doim oxirida default policy qo‘yilgan bo‘lishi kerak (DROP yoki ACCEPT).